package jsyf.oa.service.system;


import com.alibaba.dubbo.common.utils.StringUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import jsyf.com.util.FastJsonConvert;
import jsyf.oa.dao.system.Enum2Dao;
import jsyf.oa.entity.system.Enum2Entity;
import jsyf.oa.facade.system.Enum2Facade;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;

@Service
@Transactional(rollbackFor = Exception.class)
@com.alibaba.dubbo.config.annotation.Service(protocol = {"dubbo"})
public class Enum2Service implements Enum2Facade {

    @Autowired
    private Enum2Dao enum2Dao;


    @Override
    public List<JSONObject> selectByModuleType(String jsonData) {
        JSONObject jsonParams = FastJsonConvert.convertJSONToObject(jsonData, JSONObject.class);
        return  enum2Dao.getJSONListByCondition(" AND MODULE_TYPE=? AND DEL_FLAG=0 ORDER BY SORT_NO",new Object[]{jsonParams.getString("moduleType")});
    }

    @Override
    public JSONObject getById(String jsonData) {
        JSONObject jsonParams = FastJsonConvert.convertJSONToObject(jsonData, JSONObject.class);
        return  enum2Dao.getJSONListByCondition(" AND ID=? AND DEL_FLAG=0 ORDER BY SORT_NO",new Object[]{jsonParams.getString("id")}).get(0);
    }

    @Override
    public Boolean delById(String jsonData) {
        JSONObject jsonParams = FastJsonConvert.convertJSONToObject(jsonData, JSONObject.class);
        Integer flag=enum2Dao.delById(jsonParams.getString("id"));
        if(flag>0){
            return true;
        }else{
            return false;
        }
    }

    @Override
    public String save(String jsonData) {
        Enum2Entity enum2Entity = JSON.toJavaObject(JSON.parseObject(jsonData), Enum2Entity.class);
        Integer rows;
        if ("0".equals(enum2Entity.getId()) || StringUtils.isBlank(enum2Entity.getId())) {
            if(enum2Entity.getSortNo()==null){
                enum2Entity.setSortNo(0);
            }
            enum2Entity.setDelFlag(0);
            rows = enum2Dao.add(enum2Entity);
        } else {
            Enum2Entity entity = enum2Dao.getById(enum2Entity.getId());
            entity.setKey(enum2Entity.getKey());
            entity.setValue(enum2Entity.getValue());
            entity.setRemark(enum2Entity.getRemark());
            entity.setModuleType(enum2Entity.getModuleType());
            entity.setSortNo(enum2Entity.getSortNo());
            rows = enum2Dao.update(entity);
        }
        return rows == 0 ? "" : enum2Entity.getId();
    }
    //List<JSONObject> moduleTypeList =enum2Dao.getGroupBymoduleType();


    @Override
    public List<JSONObject> moduleTypeList() {

        return enum2Dao.getGroupBymoduleType();

    }
}
